package leetcode;

import util.ListNode;

/**
 * @Project : AlgorithmLearning
 * @Package : Leetcode
 * @File : Q0024.java
 * @Author : WangRuoyu
 * @Date 2023/11/7 21:57
 */


public class Q0024 {
    //    public ListNode swapPairs(ListNode head) {
//        if (head == null || head.next == null) return head;
//        ListNode rhead = new ListNode(-1, head);
//        ListNode p = rhead;
//        ListNode s = head;
//        while (s.next != null) {
//            p.next = s.next;
//            s.next = s.next.next;
//            p.next.next = s;
//            if (s.next==null) break;
//            p=s;
//            s=s.next;
//        }
//        return rhead.next;
//    }

    public void change(ListNode p, ListNode s) {
        if (s.next == null) return;
        p.next = s.next;
        s.next = s.next.next;
        p.next.next = s;
        if (s.next == null) return;
        p = s;
        s = s.next;
        change(p, s);
    }

    public ListNode swapPairs(ListNode head) {
        if (head == null || head.next == null) return head;
        ListNode rhead = new ListNode(-1, head);
        ListNode p = rhead;
        ListNode s = head;
        change(p, s);
        return rhead.next;
    }

    public static void main(String[] args) {
        Q0024 sl = new Q0024();
    }
}